
/**
 * @apiDefine ErrorResponse
 * @apiError (请求错误) {String} err_message 错误信息描述
 */

/**
 * @apiVersion 1.0.0
 * @apiGroup  商品
 * @api {POST} api/product/create 创建商品
 * @apiName api/product/create
 * @apiExample {js} axios 例子:
 *  axios.post('http://39.105.38.34:8080/api/product/create', {
 *    name: '商品名',
 *    categoryID: 12, // 分类ID
 *    storeID: 1, // 店铺ID
 *    online: 1, // 上架状态 1 上架, 2 未上架
 *    images: ['xx.png', 'xxx.jpg'], // 商品图片链接
 *    detail: ['xxx.png', 'xxxx.jpg'], // 商品详情图片链接
 *    options: [{
 *      name: '规格名',
 *      price: 80, // 规格价格
 *      originPrice: 100, // 规格原价
 *      salesVolume: 888, // 销量
 *    }, ...],
 *  });
 * @apiHeader {String} authorization 用户登录或注册成功时返回的 token
 * @apiParam {String} name 商品名
 * @apiParam {Number} categoryID 分类ID
 * @apiParam {Number} storeID 店铺ID 
 * @apiParam {Number} online 商品上架状态 1: 上架， 2: 未上架
 * @apiParam {[String]} images 商品图片
 * @apiParam {[String]} detail 商品详情图片
 * @apiParam {[Option]} options 商品规格列表
 * @apiSuccess (请求成功) {Object} product 商品数据
 * @apiuse  ErrorResponse
 */

const { query, create } = require('../../helper/db');
const { ok, door, now } = require('../../helper/util');

module.exports = async ctx => {
  var params = ctx.request.body;
  var token = ctx.headers.authorization;
  var user = await door(token);
  var storelist = await query('select * from product where name = ?', [params.name]);

  if (storelist.length) {
    throw new Error('该商品已存在');
  }

  var product = await create('product', {
    name: params.name,
    categoryID:params.categoryID,
    storeID:params.storeID,
    online:params.online,
    createdat: now(),
  });

  params.images.forEach(item=>{
    create('productImg', {
      src:item,
      productID:product.id,
      createdat: now(),
    })
  })
  
  params.detail.forEach(item=>{
    create('productDetail', {
      src:item,
      productID:product.id,
      createdat: now(),
    })
  })

  params.options.forEach(item=>{
    create('productOption', {
      name:item.name,
      price: item.price, // 规格价格
      originPrice: item.originPrice, // 规格原价
      salesVolume: item.salesVolume, // 销量
      productID:product.id,
      createdat: now(),
    })
  })

  

  var product = {
    id:product.id,
    name: params.name,
    categoryID: params.categoryID, // 分类ID
    storeID: params.storeID, // 店铺ID
    online: params.online,// 上架状态 1 上架, 2 未上架 
    images: params.images, // 商品图片链接
    detail: params.detail, // 商品详情图片链接
    options:params.options,
  }
  
  ctx.body = ok({ product });
}
